/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Home.java
 *
 * Created on 25-ago-2011, 17:36:38
 */
package IDE;

import ArbolD.*;
import Bitacora.Escribir_Errores;
import Buscador.llenar_BD;
import Grafico.Creador;
import java.awt.Component;
import java.awt.HeadlessException;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import tabla_simbolos.Escribir_Tabla;
import tabla_simbolos.Tabla_Simbolos_G;


/**
 *
 * @author Karadak
 */
public class Face extends javax.swing.JFrame  {

    // Variables Globales
    static int tab_actual = -1;
    static String directorio = "";
    static int index = 0;
    
    //errores
    public static ArrayList errores_lexicos = new ArrayList();
    public static ArrayList errores_sintacticos = new ArrayList();
    public static ArrayList errores_semanticos = new ArrayList();
    
    
       
    
    // Variables para arbol de directorio
    
    DefaultMutableTreeNode master; // nodo principal
    DefaultTreeModel modelo; 
    
    //directorio
    String dir_directorio = "";
    String dir_padre = "";
    int files = 0;
    boolean ya_creo_proyecto = false;
    
    public ArrayList<String> archivos = new ArrayList();
    
    public static ArrayList<String> archivosP = new ArrayList();    
    // abrir tabs
    ArrayList<String> se_abrio = new ArrayList();
    ArrayList<Integer> id_abrio = new ArrayList();   
    
   
    
    //String extencion;
    ArrayList<String> file_control = new ArrayList();
    ArrayList<String> file_comp = new ArrayList();
    
       // Almacenar para la busqueda
    public static llenar_BD busqueda = new llenar_BD();
    
    
    // tabla de Simbolos de C
    public static Tabla_Simbolos_G tabla_simbolos = new Tabla_Simbolos_G();
    
    Escribir_Errores ierror = new Escribir_Errores();
    
    //Creador de imagen
    Creador Generador = new Creador();
    
    public void limpiar_parser()
    {    
        tabla_simbolos.limpiar_Tabla_Simbolos_C();
        Tabla_Simbolos_G.Limpiar_auxiliares();
        Generador.Limpiar_codigo();
        
        errores_lexicos.clear();
        errores_sintacticos.clear();
        errores_semanticos.clear();
        
      
    }
    
    public void limpiar()
    {
        // Variables para arbol de directorio
        archivosP.clear();
        archivos.clear();
        
        dir_directorio = "";
        dir_padre = "";
        files = 0;
        ya_creo_proyecto = false;
        
        master = null;
        modelo = null;
        
        file_control.clear();
        file_comp.clear();
        
        //___________________________________
        
        
        // Varibles de PARSER       
        
       tab_actual = -1;
       directorio = "";
       index = 0;
       //errores
       errores_lexicos.clear();
       errores_sintacticos.clear();
       errores_semanticos.clear();
       // tabla de simbolos
      
       
        //____________________________________
       
       se_abrio.clear();
       
       b_abrir_proyecto.setEnabled(true);
      
        
    }
    
    public Face() {
        initComponents();
        
//        file_control.add("--");  // 0
//        file_control.add("--");  // 1
//        file_control.add("--");  // 2
//        file_control.add("--");  // 3
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        info_proyecto = new javax.swing.JDialog();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jLabel2 = new javax.swing.JLabel();
        close_tab = new javax.swing.JDialog();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea2 = new javax.swing.JTextArea();
        jLabel3 = new javax.swing.JLabel();
        close_proyecto = new javax.swing.JDialog();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTextArea3 = new javax.swing.JTextArea();
        jLabel4 = new javax.swing.JLabel();
        listen = new javax.swing.JDialog();
        id_tag = new javax.swing.JLabel();
        play = new javax.swing.JToggleButton();
        stop = new javax.swing.JToggleButton();
        pause = new javax.swing.JToggleButton();
        back = new javax.swing.JButton();
        jScrollPane4 = new javax.swing.JScrollPane();
        tag = new javax.swing.JTextArea();
        JBuscar = new javax.swing.JFrame();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        parametro = new javax.swing.JTextField();
        opciones = new javax.swing.JComboBox();
        b_buscar = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        lista = new javax.swing.JList();
        archivo = new javax.swing.JLabel();
        ir_a = new javax.swing.JButton();
        Scroll_Panel = new javax.swing.JScrollPane();
        work_area = new javax.swing.JTabbedPane();
        herramientas = new javax.swing.JToolBar();
        b_proyecto = new javax.swing.JButton();
        b_abrir_proyecto = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        nuevo_archivo = new javax.swing.JButton();
        b_abrir_file = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        b_guardar = new javax.swing.JButton();
        b_guardar_como = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        b_ejecutar = new javax.swing.JButton();
        b_errores = new javax.swing.JButton();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        tabla_simbol = new javax.swing.JButton();
        VerGraficos = new javax.swing.JButton();
        jSeparator5 = new javax.swing.JToolBar.Separator();
        cerrar_pestaña = new javax.swing.JButton();
        cerrar_proyecto = new javax.swing.JButton();
        jSeparator6 = new javax.swing.JToolBar.Separator();
        scroll_directorio = new javax.swing.JScrollPane();
        arbol_directorio = new javax.swing.JTree();
        msj = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem6 = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem8 = new javax.swing.JMenuItem();
        jMenuItem7 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        jMenuItem9 = new javax.swing.JMenuItem();
        jMenu4 = new javax.swing.JMenu();
        jMenuItem10 = new javax.swing.JMenuItem();
        jMenuItem11 = new javax.swing.JMenuItem();

        info_proyecto.setTitle("Proyecto");
        info_proyecto.setBounds(new java.awt.Rectangle(10, 325, 250, 150));

        jTextArea1.setColumns(20);
        jTextArea1.setEditable(false);
        jTextArea1.setFont(new java.awt.Font("Dialog", 1, 11)); // NOI18N
        jTextArea1.setRows(5);
        jTextArea1.setText("Puede crear un nuevo proyecto,\n  - agregar archivos de sonido CNGA\n  - visualizar pentagrama\n  - escuchar archivo de sonido");
        jTextArea1.setDisabledTextColor(new java.awt.Color(51, 51, 255));
        jScrollPane1.setViewportView(jTextArea1);

        jLabel2.setFont(new java.awt.Font("DialogInput", 1, 12)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(204, 0, 0));
        jLabel2.setText("Nuevo Proyecto");

        javax.swing.GroupLayout info_proyectoLayout = new javax.swing.GroupLayout(info_proyecto.getContentPane());
        info_proyecto.getContentPane().setLayout(info_proyectoLayout);
        info_proyectoLayout.setHorizontalGroup(
            info_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
            .addGroup(info_proyectoLayout.createSequentialGroup()
                .addGroup(info_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(info_proyectoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(info_proyectoLayout.createSequentialGroup()
                        .addGap(75, 75, 75)
                        .addComponent(jLabel2)))
                .addContainerGap(164, Short.MAX_VALUE))
        );
        info_proyectoLayout.setVerticalGroup(
            info_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
            .addGroup(info_proyectoLayout.createSequentialGroup()
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(196, Short.MAX_VALUE))
        );

        close_tab.setTitle("Cerrar Pestaña Actual");
        close_tab.setBounds(new java.awt.Rectangle(600, 325, 250, 150));

        jTextArea2.setColumns(20);
        jTextArea2.setEditable(false);
        jTextArea2.setFont(new java.awt.Font("Dialog", 1, 11)); // NOI18N
        jTextArea2.setRows(5);
        jTextArea2.setText("Cierra la pestaña Actual?\n\n  - no Guarda el contenido...!\n");
        jTextArea2.setDisabledTextColor(new java.awt.Color(51, 51, 255));
        jScrollPane2.setViewportView(jTextArea2);

        jLabel3.setFont(new java.awt.Font("DialogInput", 1, 12)); // NOI18N
        jLabel3.setForeground(new java.awt.Color(204, 0, 0));
        jLabel3.setText("Cerrar Pestaña");

        javax.swing.GroupLayout close_tabLayout = new javax.swing.GroupLayout(close_tab.getContentPane());
        close_tab.getContentPane().setLayout(close_tabLayout);
        close_tabLayout.setHorizontalGroup(
            close_tabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
            .addGroup(close_tabLayout.createSequentialGroup()
                .addGroup(close_tabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(close_tabLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(close_tabLayout.createSequentialGroup()
                        .addGap(75, 75, 75)
                        .addComponent(jLabel3)))
                .addContainerGap(164, Short.MAX_VALUE))
        );
        close_tabLayout.setVerticalGroup(
            close_tabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
            .addGroup(close_tabLayout.createSequentialGroup()
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(196, Short.MAX_VALUE))
        );

        close_proyecto.setTitle("Cerrar Peoyecto Actual");
        close_proyecto.setBounds(new java.awt.Rectangle(600, 325, 250, 150));

        jTextArea3.setColumns(20);
        jTextArea3.setEditable(false);
        jTextArea3.setFont(new java.awt.Font("Dialog", 1, 11)); // NOI18N
        jTextArea3.setRows(5);
        jTextArea3.setText("Cierra el Proyecto Actual?\n\n- no Guarda los cambios en los archivos...!\n");
        jTextArea3.setDisabledTextColor(new java.awt.Color(51, 51, 255));
        jScrollPane3.setViewportView(jTextArea3);

        jLabel4.setFont(new java.awt.Font("DialogInput", 1, 12)); // NOI18N
        jLabel4.setForeground(new java.awt.Color(204, 0, 0));
        jLabel4.setText("Cerrar Proyecto");

        javax.swing.GroupLayout close_proyectoLayout = new javax.swing.GroupLayout(close_proyecto.getContentPane());
        close_proyecto.getContentPane().setLayout(close_proyectoLayout);
        close_proyectoLayout.setHorizontalGroup(
            close_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(close_proyectoLayout.createSequentialGroup()
                .addGroup(close_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(close_proyectoLayout.createSequentialGroup()
                        .addGap(75, 75, 75)
                        .addComponent(jLabel4))
                    .addGroup(close_proyectoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(145, Short.MAX_VALUE))
        );
        close_proyectoLayout.setVerticalGroup(
            close_proyectoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(close_proyectoLayout.createSequentialGroup()
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(213, Short.MAX_VALUE))
        );

        listen.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        listen.setTitle("Escuchar Musica");
        listen.setAlwaysOnTop(true);
        listen.setBounds(new java.awt.Rectangle(600, 325, 350, 250));
        listen.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                listenWindowActivated(evt);
            }
        });

        id_tag.setFont(new java.awt.Font("DialogInput", 1, 12)); // NOI18N
        id_tag.setForeground(new java.awt.Color(204, 0, 0));
        id_tag.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

        play.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/Play.png"))); // NOI18N
        play.setText("Play");
        play.setToolTipText("Reproducir");
        play.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                playActionPerformed(evt);
            }
        });

        stop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/stop.png"))); // NOI18N
        stop.setText("Stop");
        stop.setToolTipText("Parar");
        stop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                stopActionPerformed(evt);
            }
        });

        pause.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/pause.png"))); // NOI18N
        pause.setToolTipText("Pausa");
        pause.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pauseActionPerformed(evt);
            }
        });

        back.setText("Regresar");
        back.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backActionPerformed(evt);
            }
        });

        tag.setColumns(20);
        tag.setForeground(new java.awt.Color(204, 0, 0));
        tag.setRows(5);
        jScrollPane4.setViewportView(tag);

        javax.swing.GroupLayout listenLayout = new javax.swing.GroupLayout(listen.getContentPane());
        listen.getContentPane().setLayout(listenLayout);
        listenLayout.setHorizontalGroup(
            listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(listenLayout.createSequentialGroup()
                .addGroup(listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, listenLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(id_tag, javax.swing.GroupLayout.DEFAULT_SIZE, 413, Short.MAX_VALUE))
                    .addGroup(listenLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(listenLayout.createSequentialGroup()
                                .addGap(10, 10, 10)
                                .addGroup(listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addGroup(listenLayout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 219, Short.MAX_VALUE)
                                        .addComponent(back, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, listenLayout.createSequentialGroup()
                                        .addComponent(play)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(pause)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(stop))))
                            .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 413, Short.MAX_VALUE))))
                .addContainerGap())
        );
        listenLayout.setVerticalGroup(
            listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(listenLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(listenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(play)
                        .addComponent(stop))
                    .addGroup(listenLayout.createSequentialGroup()
                        .addGap(40, 40, 40)
                        .addComponent(pause)))
                .addGap(11, 11, 11)
                .addComponent(back)
                .addGap(130, 130, 130)
                .addComponent(id_tag, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        JBuscar.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        JBuscar.setTitle("Buscar Melodia");
        JBuscar.setBounds(new java.awt.Rectangle(150, 125, 900, 500));
        JBuscar.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                JBuscarWindowOpened(evt);
            }
            public void windowActivated(java.awt.event.WindowEvent evt) {
                JBuscarWindowActivated(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Buscar", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.red));

        jLabel1.setText("Ingrese Parametro: ");

        parametro.setForeground(new java.awt.Color(0, 0, 204));
        parametro.setText("Ingrese Busqueda...");
        parametro.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                dar_click(evt);
            }
        });

        opciones.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Nombre", "Genero", "Compas", "Compositor", "Instrumento", "Estilo" }));

        b_buscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/clic_buscar.png"))); // NOI18N
        b_buscar.setText("Buscar");
        b_buscar.setHorizontalAlignment(javax.swing.SwingConstants.LEADING);
        b_buscar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        b_buscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_buscarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(opciones, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(34, 34, 34)
                        .addComponent(b_buscar, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(parametro, javax.swing.GroupLayout.PREFERRED_SIZE, 443, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(233, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(parametro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(opciones, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(b_buscar))
                .addContainerGap(23, Short.MAX_VALUE))
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Resultados"));

        lista.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        lista.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                listaValueChanged(evt);
            }
        });
        jScrollPane5.setViewportView(lista);

        archivo.setForeground(new java.awt.Color(0, 0, 204));
        archivo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        archivo.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Archivo Asociado:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, new java.awt.Color(255, 0, 0)));

        ir_a.setText("Ir a Archivo...");
        ir_a.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ir_aActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(ir_a)
                        .addGap(101, 101, 101))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(archivo, javax.swing.GroupLayout.PREFERRED_SIZE, 298, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(48, 48, 48)
                        .addComponent(archivo, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(ir_a))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(26, 26, 26)
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(36, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout JBuscarLayout = new javax.swing.GroupLayout(JBuscar.getContentPane());
        JBuscar.getContentPane().setLayout(JBuscarLayout);
        JBuscarLayout.setHorizontalGroup(
            JBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(JBuscarLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(JBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        JBuscarLayout.setVerticalGroup(
            JBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(JBuscarLayout.createSequentialGroup()
                .addGap(29, 29, 29)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(66, 66, 66))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Symphony 7 v1.0");
        setBounds(new java.awt.Rectangle(230, 140, 0, 0));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });

        work_area.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseExited(java.awt.event.MouseEvent evt) {
                work_areaMouseExited(evt);
            }
        });
        work_area.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                work_areaStateChanged(evt);
            }
        });
        work_area.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                work_areaMouseMoved(evt);
            }
        });
        Scroll_Panel.setViewportView(work_area);

        herramientas.setRollover(true);

        b_proyecto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/m1.png"))); // NOI18N
        b_proyecto.setToolTipText("Nuevo Proyecto (Ctrl + N)");
        b_proyecto.setFocusable(false);
        b_proyecto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_proyecto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_proyecto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                b_proyectoMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                b_proyectoMouseExited(evt);
            }
        });
        b_proyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_proyectoActionPerformed(evt);
            }
        });
        herramientas.add(b_proyecto);

        b_abrir_proyecto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/proyecto.png"))); // NOI18N
        b_abrir_proyecto.setToolTipText("Abrir Proyecto (Ctrl +A)");
        b_abrir_proyecto.setFocusable(false);
        b_abrir_proyecto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_abrir_proyecto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_abrir_proyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_abrir_proyectoActionPerformed(evt);
            }
        });
        herramientas.add(b_abrir_proyecto);
        herramientas.add(jSeparator1);

        nuevo_archivo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/symbol.png"))); // NOI18N
        nuevo_archivo.setToolTipText("Nuevo Archivo CNGA (Ctrl +N )");
        nuevo_archivo.setFocusable(false);
        nuevo_archivo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        nuevo_archivo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        nuevo_archivo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nuevo_archivoActionPerformed(evt);
            }
        });
        herramientas.add(nuevo_archivo);

        b_abrir_file.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/open file.png"))); // NOI18N
        b_abrir_file.setToolTipText("Abrir Archivo CNGA y agregar al proyecto");
        b_abrir_file.setFocusable(false);
        b_abrir_file.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_abrir_file.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_abrir_file.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_abrir_fileActionPerformed(evt);
            }
        });
        herramientas.add(b_abrir_file);
        herramientas.add(jSeparator2);

        b_guardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/turbo_on2.png"))); // NOI18N
        b_guardar.setToolTipText("Guardar Archivo (Ctrl + S)");
        b_guardar.setFocusable(false);
        b_guardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_guardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_guardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_guardarActionPerformed(evt);
            }
        });
        herramientas.add(b_guardar);

        b_guardar_como.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/Save2.png"))); // NOI18N
        b_guardar_como.setToolTipText("Guardar Archhivo Como... (Alt + S)");
        b_guardar_como.setFocusable(false);
        b_guardar_como.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_guardar_como.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_guardar_como.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_guardar_comoActionPerformed(evt);
            }
        });
        herramientas.add(b_guardar_como);
        herramientas.add(jSeparator3);

        b_ejecutar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/correr.png"))); // NOI18N
        b_ejecutar.setToolTipText("Compilar El Archivo Actual (Ctrl + R)");
        b_ejecutar.setFocusable(false);
        b_ejecutar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_ejecutar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_ejecutar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_ejecutarActionPerformed(evt);
            }
        });
        herramientas.add(b_ejecutar);

        b_errores.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/Errores.png"))); // NOI18N
        b_errores.setToolTipText("Ver Tabla de Simbolos (Ctrl + E)");
        b_errores.setEnabled(false);
        b_errores.setFocusable(false);
        b_errores.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        b_errores.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        b_errores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                b_erroresActionPerformed(evt);
            }
        });
        herramientas.add(b_errores);
        herramientas.add(jSeparator4);

        tabla_simbol.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/Nuevo Archivo.png"))); // NOI18N
        tabla_simbol.setFocusable(false);
        tabla_simbol.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        tabla_simbol.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        tabla_simbol.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tabla_simbolActionPerformed(evt);
            }
        });
        herramientas.add(tabla_simbol);

        VerGraficos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/o.png"))); // NOI18N
        VerGraficos.setText("Grafico");
        VerGraficos.setToolTipText("Ver Grafica");
        VerGraficos.setFocusable(false);
        VerGraficos.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        VerGraficos.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        VerGraficos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                VerGraficosActionPerformed(evt);
            }
        });
        herramientas.add(VerGraficos);
        herramientas.add(jSeparator5);

        cerrar_pestaña.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/Cerrar Pestaña.png"))); // NOI18N
        cerrar_pestaña.setToolTipText("Cerrar Pestaña Actual");
        cerrar_pestaña.setFocusable(false);
        cerrar_pestaña.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        cerrar_pestaña.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        cerrar_pestaña.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                cerrar_pestañaMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                cerrar_pestañaMouseExited(evt);
            }
        });
        cerrar_pestaña.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cerrar_pestañaActionPerformed(evt);
            }
        });
        herramientas.add(cerrar_pestaña);

        cerrar_proyecto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Iconos/close pr.png"))); // NOI18N
        cerrar_proyecto.setToolTipText("cerrar proyecto");
        cerrar_proyecto.setFocusable(false);
        cerrar_proyecto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        cerrar_proyecto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        cerrar_proyecto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                cerrar_proyectoMouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                cerrar_proyectoMouseExited(evt);
            }
        });
        cerrar_proyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cerrar_proyectoActionPerformed(evt);
            }
        });
        herramientas.add(cerrar_proyecto);
        herramientas.add(jSeparator6);

        scroll_directorio.setBorder(javax.swing.BorderFactory.createTitledBorder("Proyecto"));

        arbol_directorio.setToolTipText("Arbol de Archivos");
        arbol_directorio.setPreferredSize(new java.awt.Dimension(72, 150));
        arbol_directorio.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                arbol_directorioValueChanged(evt);
            }
        });
        scroll_directorio.setViewportView(arbol_directorio);

        msj.setFont(new java.awt.Font("Ubuntu Titling Rg", 1, 12)); // NOI18N
        msj.setForeground(new java.awt.Color(204, 0, 0));
        msj.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

        jMenu1.setMnemonic('A');
        jMenu1.setText("Archivo");

        jMenuItem6.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem6.setText("Nuevo Proyecto");
        jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem6ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem6);

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setText("Nuevo Archivo CNGA");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem2.setText("Abrir Proyecto");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem3.setText("Guardar Archivo");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK));
        jMenuItem4.setText("Guardar Archivo Como...");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem4);

        jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem5.setText("Salir");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem5);

        jMenuBar1.add(jMenu1);

        jMenu2.setMnemonic('E');
        jMenu2.setText("Ejecutar");
        jMenu2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu2ActionPerformed(evt);
            }
        });

        jMenuItem8.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem8.setText("Compilar");
        jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem8ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem8);

        jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem7.setText("Pentagrama");
        jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem7ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem7);

        jMenuBar1.add(jMenu2);

        jMenu3.setMnemonic('M');
        jMenu3.setText("Mostrar");

        jMenuItem9.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem9.setText("Errores");
        jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem9ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem9);

        jMenuBar1.add(jMenu3);

        jMenu4.setText("Ayuda");

        jMenuItem10.setText("Manual de Usuario");
        jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem10ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem10);

        jMenuItem11.setText("Acerca de");
        jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem11ActionPerformed(evt);
            }
        });
        jMenu4.add(jMenuItem11);

        jMenuBar1.add(jMenu4);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(herramientas, javax.swing.GroupLayout.DEFAULT_SIZE, 785, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(scroll_directorio, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(Scroll_Panel, javax.swing.GroupLayout.DEFAULT_SIZE, 665, Short.MAX_VALUE)
                    .addComponent(msj, javax.swing.GroupLayout.DEFAULT_SIZE, 665, Short.MAX_VALUE)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(herramientas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(scroll_directorio, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
                    .addComponent(Scroll_Panel, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(msj, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    public void ver_Tabla()
    {
        int n = tabla_simbolos.getNombre().size();
        int t = tabla_simbolos.getTipo().size();
        int v = tabla_simbolos.getValor().size();
        int m = tabla_simbolos.getMetodo().size();
        int a = tabla_simbolos.getAmbito().size();
        
        Iterator nombreC = tabla_simbolos.getNombre().iterator();
        Iterator tipoC = tabla_simbolos.getTipo().iterator();
        Iterator valorC = tabla_simbolos.getValor().iterator();
        Iterator metodoC = tabla_simbolos.getMetodo().iterator();
        Iterator ambitoC = tabla_simbolos.getAmbito().iterator();
        Iterator lenguajeC = tabla_simbolos.getLenguaje().iterator();
        
         System.out.print("\n\n ___________________________________\n");
         
        while (nombreC.hasNext()) 
        {
            System.out.print("Nombre "+nombreC.next() + " ");
            System.out.print("tipo "+tipoC.next() + " ");
            System.out.print("valor "+valorC.next() + " ");
            System.out.print("metodo "+metodoC.next() + " ");
            System.out.print("ambito "+ambitoC.next() + " ");
            System.out.println("lenguaje "+lenguajeC.next() + " ");
        }
        System.out.println("___________________________________ ");
        System.out.println("n "+n+" t "+t+" v "+v+" m "+m+" a "+a);
        
       
        
        
        
    }
    
    private void work_areaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_work_areaStateChanged
        
        JTabbedPane pane = (JTabbedPane) evt.getSource();
        tab_actual = pane.getSelectedIndex();

        //System.out.println("TAB_ACTUAL "+tab_actual+ " NAME "+pane.getTitleAt(tab_actual));
        System.out.println("TAB_ACTUAL "+tab_actual);
        //pane.getSelectedComponent();
        
    }//GEN-LAST:event_work_areaStateChanged

    private void nuevo_archivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nuevo_archivoActionPerformed
        // creando nuevo archivo CNGA
        try
        {
            if(this.ya_creo_proyecto)
            {
                // creamos archivo y pestaña en el editor
                String nom_file = crear_archivo();
                
//                //if(file_control.contains(".css") && file_control.contains(".c") && file_control.contains(".xml") && file_control.contains(".r") )
//                if(file_control.contains(ext))
//                {                               
//                }
//                else
//                {
                    if(!nom_file.isEmpty())
                    {
                        // agreagamos nodo al arbol de directorios
                        agregar_nodo(nom_file);
                        se_abrio.add(nom_file);
                        id_abrio.add(index);
                        arbol_directorio.expandRow(0);
                    }    
//                }
            }
            else
            {
                // creamos proyecto
                //crear_proyecto();
                
                crear_folder();
                iniciar_arbol();
                
                // creamos archivo y pestaña en el editor
                String nom_file = crear_archivo();
                
                if(!nom_file.isEmpty())
                {
                    // agreagamos nodo al arbol de directorios
                    agregar_nodo(nom_file);
                    se_abrio.add(nom_file);
                    id_abrio.add(index);
                    arbol_directorio.expandRow(0);
                }               
               
            }     
        }        
        catch(Exception er)
        {
            System.err.println("Error en crear pestaña "+er.getMessage());
        }
    }//GEN-LAST:event_nuevo_archivoActionPerformed

    private void compilar_archivo()
    {
        try
        {
            // limpiamos el parser
            limpiar_parser();
            
                 
            //guardamos el contenido actual del archivo
            String nombre_archivo = this.dir_directorio+"\\"+get_nom_tab_actual();
            
            guardar_contenido_tab(nombre_archivo);
            guardar_arbol();
            
            int xml = this.file_control.indexOf(".xml");
            int css = this.file_control.indexOf(".css");
            int ruby = this.file_control.indexOf(".r");
            int c = this.file_control.indexOf(".c");

            Abrir_CNGA open = new Abrir_CNGA();


//            open.abrir_archivoXML(this.file_comp.get(xml));    // xml
//            open.abrir_archivoCSS(this.file_comp.get(css));    // css
            open.abrir_archivoRuby(this.file_comp.get(ruby));   // ruby
            open.abrir_archivoC(this.file_comp.get(c));      // c

            // escribimos errores
            this.escribir_errores(nombre_archivo);
            
            // tabla de simbolos
            Escribir_Tabla write = new Escribir_Tabla();
            write.ArchivoErrores(this.dir_directorio, this.dir_padre);
            
            //Crear dibujo
            this.Crear_grafico();
        }
        catch(Exception er)
        {
            System.err.println("[METODO COMPILAR] exp "+er.getMessage());
        }
    }
    private void b_ejecutarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_ejecutarActionPerformed
        try 
        {
            if(ya_creo_proyecto)
            { 
                compilar_archivo();
                
                
            }
        }            
        catch (Exception ex) 
        {
            System.out.println("Error en llamar al PARSER "+ex.toString());      
            //historial.setText(historial.getText()+"error en Archivo \n");
        }
    }//GEN-LAST:event_b_ejecutarActionPerformed

    
    
   
    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        
        this.herramientas.setFocusable(true);
        arbol_directorio.setVisible(false);     
        work_area.setTabPlacement(JTabbedPane.BOTTOM);
       
    }//GEN-LAST:event_formWindowOpened

    private void b_proyectoMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_b_proyectoMouseEntered
        info_proyecto.setVisible(true);
        
    }//GEN-LAST:event_b_proyectoMouseEntered

    private void b_proyectoMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_b_proyectoMouseExited
        info_proyecto.setVisible(false);
    }//GEN-LAST:event_b_proyectoMouseExited

    private void b_proyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_proyectoActionPerformed
        //Nuevo Proyecto
        
        crear_folder();
        iniciar_arbol();
    }//GEN-LAST:event_b_proyectoActionPerformed

    public String crear_folder() 
    {
        // Abrir Archivo en el sistema
        filtro_dir filtro_archivo = new filtro_dir();    
        String Salida = "";
        
        try
        {
            JFileChooser abrir = new JFileChooser(); 
            
            abrir.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            abrir.setFileFilter(filtro_archivo);
            abrir.showSaveDialog(this);
            
          
            File name = abrir.getSelectedFile();
            
             if(!name.isDirectory())
             {
                 JOptionPane.showMessageDialog(null, "No es Directorio");
                 dir_directorio = "";
                 dir_padre = "";
             }
             else
             {
                 //JOptionPane.showMessageDialog(null, "Si es Directorio");                
                 dir_directorio = name.getAbsolutePath();
                 dir_padre = name.getName();
                 //System.out.println("Directorio Creado...");
                 ya_creo_proyecto = true;
                 b_abrir_proyecto.setEnabled(false);
             }
        }
        catch(Exception er)
        {
            System.out.println("Error en crear Directorio:Metodo: "+er);
        }
          
        
        return Salida;
}
    private void abrir_tabs(String archivo, String nombre_archivo)
    {
        try
        {
            //System.out.println(" Arch "+archivo+" nombre "+nombre_archivo);

            FileReader archivo_temp = new FileReader(archivo);

            BufferedReader br = new BufferedReader(archivo_temp);
            String codigo = "";
            String linea;

            // Leemos Linea por linea el arhivo
            while((linea=br.readLine())!=null)
            {
                codigo += linea+"\n";
            }

            //File aux = new File(archivo);

            // agregamos los tabs
            JTextPane area_texto = new JTextPane();
            area_texto.setText(codigo);
            area_texto.setName(""+index);
            TextLineNumber tln = new TextLineNumber(area_texto);         
            Scroll_Panel.setRowHeaderView( tln );
            work_area.insertTab(nombre_archivo, new ImageIcon("src\\Iconos\\tab.png"), area_texto, "Codigo de "+nombre_archivo, index);

             // agregamos Listener a los tabs
            int num_tabs =  this.work_area.getTabCount();
            if(num_tabs == 1)
            {
                this.listenerTAB();
                //System.out.append("Agregamos Listener a los tabs");
            }

            work_area.setSelectedIndex(index);
            //System.out.println("INDEX::::::: "+index);

            //ya_creo_proyecto = true;
            // deshabilitamos el boton de abrir proyecto
            //this.Abrir_proyecto.setEnabled(false);

            index++;

            //System.out.println("Contenido: \n\n"+codigo+"\n\n");
            codigo = "";
            linea = "";            
            
        }
        catch(Exception er)
        {
            System.out.println("Error en abrir tabs: "+er);
        }
    }
    
    private void arbol_directorioValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_arbol_directorioValueChanged
        
        // selecciona elemento del arbol de directorios
        try
        {
            String path[] = evt.getPath().toString().split(",");
            String last = path[1].trim();
            String path3[] = last.split("]");
            
            String nombre_archivo = path3[0];
            
            //System.out.println("PATH del Archivo: "+this.dir_directorio+"\\"+nombre_archivo+" tamaño de archivos "+archivos.size());
            if(!se_abrio.contains(nombre_archivo))
            {
                abrir_tabs(this.dir_directorio+"\\"+nombre_archivo, nombre_archivo);
                se_abrio.add(nombre_archivo);
                id_abrio.add(index);                
            }    
            else
            {
                int dir = se_abrio.indexOf(nombre_archivo);
                //System.out.println("Se mueve a : "+nombre_archivo+ " DIR "+dir); 
                work_area.setSelectedIndex(dir);
            }
            
            this.Scroll_Panel.setVisible(true);
        
            
        }
        catch(Exception er)
        {
            System.out.println("[Listener Arbol]ERR "+er.getMessage());
        }
      
    }//GEN-LAST:event_arbol_directorioValueChanged

  
    private void guardar_contenido_tab(String dir_archivo)
    {
        try
        {
            Component aux = work_area.getSelectedComponent();
            JTextPane p = (JTextPane) aux;
            String contenido = p.getText();
            try (FileWriter fichero = new FileWriter(dir_archivo,false); PrintWriter pw = new PrintWriter(fichero)) 
            {
                
                //pw.println(contenido.replace("\n","\r\n"));
                pw.println(contenido.replace("\n","\n"));
                pw.close();
                fichero.close();
            }
            
            
            //System.out.println("Archivo Guardado...");
        }
        catch(Exception er)
        {
            System.out.println("[CONTENIDO DE TAB] EXP"+er);
        }

    }
    
    private String get_nom_tab_actual()
    {   
        String salida = "";
        try
        {
            salida = work_area.getTitleAt(tab_actual);
            //System.out.println("TAB_ACTUAL "+tab_actual+ " NAME "+work_area.getTitleAt(tab_actual));
        }
        catch(Exception er)
        {
            System.err.println("[NOM_TAB] "+er.getMessage());
        }
        
        return salida;
    }
    private void b_guardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_guardarActionPerformed
        
        try
        {
            // boton que guarda archivo actual y guarda archivo de arbol de proyecto
            guardar_arbol();

            //String nombre_archivo = this.dir_directorio+"\\"+archivos.get(tab_actual)+".CNGA";
            String nombre_archivo = this.dir_directorio+"\\"+get_nom_tab_actual();
            guardar_contenido_tab(nombre_archivo);
            System.out.println("Archivo actual a guardar: "+nombre_archivo);
            
            //Guardar sv = new Guardar();

            //sv.guardarArchivo(nombre_archivo, dir_padre);
        }
        catch(Exception er)
        {
            System.err.println("[Guardar] "+er.getMessage());
        }
        
    }//GEN-LAST:event_b_guardarActionPerformed

    private void abrir_xml()
    {
        try
        {
            Abrir_CNGA open = new Abrir_CNGA();
            //System.out.println("[HOME] "+dir_directorio+"\\"+dir_padre+".XML");
            
            open.abrir_XML(dir_directorio+"\\"+dir_padre+".XML");
            
            //busqueda.lleno();
            //open.abrir_XML("Nelson.xml");
            
        }
        catch(Exception er)
        {
            System.err.println("[XML_UPLOAD] "+er.getMessage());
        }
    }
    private void b_abrir_proyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_abrir_proyectoActionPerformed
        
        // Abrir Proyecto
        try
        {
            // abrir proyecto
            limpiar();

            abrir_eda();
            this.ya_creo_proyecto = true;
            b_abrir_proyecto.setEnabled(false);
            iniciar_arbol();

            // leemos lista de archivos
            Iterator lf = archivosP.iterator();

            while (lf.hasNext()) 
            {
                String aux = lf.next().toString();
                agregar_nodo(aux);
                //System.out.println(this.dir_directorio+aux);
                
                String ed[] = aux.split("\\.");
                        
                //System.out.println("EXT --> "+ed[1]);
                        
                file_control.add("."+ed[1]);
                file_comp.add(this.dir_directorio+"\\"+aux);
                
            }
            arbol_directorio.expandRow(0);
            arbol_directorio.repaint();
            
            // abrimos xml de metadatos
            //abrir_xml();
            
        }
        catch(Exception er)
        {
            System.err.println("[ABRIR Proyecto] "+er.getLocalizedMessage());
                        
        }
        
    }//GEN-LAST:event_b_abrir_proyectoActionPerformed

    private void cerrar_proyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cerrar_proyectoActionPerformed
        
        // Cerrar proyecto

        busqueda.guardar_xml(dir_directorio+"\\"+dir_padre+".xml");
                
        limpiar();
        limpiar_parser();
        this.close_proyecto.setVisible(false);
        this.dispose();
        new Home().setVisible(true);
    }//GEN-LAST:event_cerrar_proyectoActionPerformed

    private void cerrar_pestañaMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrar_pestañaMouseEntered
        this.close_tab.setVisible(true);
    }//GEN-LAST:event_cerrar_pestañaMouseEntered

    private void cerrar_pestañaMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrar_pestañaMouseExited
        this.close_tab.setVisible(false);
    }//GEN-LAST:event_cerrar_pestañaMouseExited

    private void cerrar_proyectoMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrar_proyectoMouseEntered
        this.close_proyecto.setVisible(true);
    }//GEN-LAST:event_cerrar_proyectoMouseEntered

    private void cerrar_proyectoMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrar_proyectoMouseExited
        this.close_proyecto.setVisible(false);
    }//GEN-LAST:event_cerrar_proyectoMouseExited

    private void cerrar_pestañaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cerrar_pestañaActionPerformed
        
        // Elimina el Tab del Area de Trabajo
        try
        {
            System.out.println("ELIMINAR de ARRAY: "+se_abrio.get(tab_actual));
            this.se_abrio.remove(tab_actual);
            this.id_abrio.remove(tab_actual);

            // cerramos el tab
            this.work_area.removeTabAt(tab_actual);
            index--;

            if(index <=0)
            {
                this.Scroll_Panel.setVisible(false);
            }
            
        }
        catch(Exception er)
        {
            System.err.println("[CERRAR TAB] exp "+er.getMessage()+"\n "+er.getCause());
        }
        
    }//GEN-LAST:event_cerrar_pestañaActionPerformed

    private void b_guardar_comoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_guardar_comoActionPerformed
         
        // Guardar Como
        
        try
        {
            String nombre_archivo = guardar_como_eda();
            //System.err.println("[SAVE AS] "+guardar_como_eda());

            if(!nombre_archivo.isEmpty())
            {
                guardar_contenido_tab(nombre_archivo);
            }
        }
        catch(Exception er)
        {
            System.err.println("[SAVE AS...] exp "+er.getMessage());
        }
        
       
    }//GEN-LAST:event_b_guardar_comoActionPerformed

    private void b_abrir_fileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_abrir_fileActionPerformed
        
        // Abrir archivo CNGA
        if(this.ya_creo_proyecto == false)
        {
            JOptionPane.showMessageDialog(null, "Antes de abrir archivo Cree un proyecto o abra uno");
        }
        else
        {
            abrir_single_cnga();
        }
    }//GEN-LAST:event_b_abrir_fileActionPerformed

    private void archivo_externo(String dir)
    {
        File archivoS = new File(dir);

        if(archivoS.exists())
        {
            java.awt.Desktop d = java.awt.Desktop.getDesktop();
            try
            {
                d.open(archivoS);
            }
            catch (IOException ex)
            {
                System.err.println("[ARCHIVO EXTERNO]: "+dir+" \n"+ex.getMessage());
            }
        }
    }
    private void b_erroresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_erroresActionPerformed
        
        // Ver archivo de errores
        String file = get_nom_tab_actual().substring(0, get_nom_tab_actual().length()-5);
        archivo_externo(dir_directorio+"\\"+file+"- Errores .xhtml");
        System.out.println(dir_directorio+"\\"+file+"- Errores .xhtml");
        
        
        
    
        
        // crear tabla de simbolos
                
       
    }//GEN-LAST:event_b_erroresActionPerformed

    private void work_areaMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_work_areaMouseMoved
       
        
    }//GEN-LAST:event_work_areaMouseMoved

    private void work_areaMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_work_areaMouseExited
        
        // cuando se mueve el mouse sobre el tab container        
        msj.setText("");
    }//GEN-LAST:event_work_areaMouseExited

    private void playActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_playActionPerformed
       
        
            
        
         
    }//GEN-LAST:event_playActionPerformed

    private void stopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopActionPerformed
       
        
    }//GEN-LAST:event_stopActionPerformed

    private void pauseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseActionPerformed
     
    }//GEN-LAST:event_pauseActionPerformed

    private void backActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backActionPerformed
        this.listen.setVisible(false);
        
    }//GEN-LAST:event_backActionPerformed

    private void listenWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_listenWindowActivated
        //this.listen.setSize(this.tag.getSize().width,250);
    }//GEN-LAST:event_listenWindowActivated

    private void JBuscarWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_JBuscarWindowOpened
      
        
      
    }//GEN-LAST:event_JBuscarWindowOpened

    private void JBuscarWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_JBuscarWindowActivated
       
    }//GEN-LAST:event_JBuscarWindowActivated

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        
        // Al cerrar la ventana
        System.out.println("[Cerreando] Guardando...");
        if(this.ya_creo_proyecto)
        {
            busqueda.guardar_xml(dir_directorio+"\\"+dir_padre+".xml");
        }
    }//GEN-LAST:event_formWindowClosing

    private void b_buscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_b_buscarActionPerformed
        
        busqueda.limpiar_busqueda();
        int opcion = opciones.getSelectedIndex();
        String texto = parametro.getText();
        
        //System.out.println("[Buscando]: "+texto);
        busqueda.buscar(opcion, texto);
        
        // asignamos el modelo
        lista.setModel(busqueda.modelo());
        
        

        
        
        
    }//GEN-LAST:event_b_buscarActionPerformed

    private void dar_click(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_dar_click
        parametro.selectAll();
        archivo.setText("");
        DefaultListModel modeloT = new DefaultListModel();
        modeloT.addElement("");
        lista.setModel(modeloT);
    }//GEN-LAST:event_dar_click

    private void ir_aActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ir_aActionPerformed
        
        try
        {
            System.out.println("[L] "+lista.getSelectedIndex() + " "+lista.getSelectedValue());

            if(!se_abrio.contains(archivo.getText()))
            {
                abrir_tabs(this.dir_directorio+"\\"+archivo.getText()+".CNGA", archivo.getText()+".CNGA");
                se_abrio.add(archivo.getText());
                id_abrio.add(index);                
            }    
            else
            {
                int dir = se_abrio.indexOf(archivo.getText());
                //System.out.println("Se mueve a : "+nombre_archivo+ " DIR "+dir); 
                work_area.setSelectedIndex(dir);
            }

            //this.Scroll_Panel.setVisible(true);
            busqueda.limpiar_busqueda();
            archivo.setText("");
            parametro.setText("Ingrese Busqueda...");
            //lista.clearSelection();
            DefaultListModel modeloT = new DefaultListModel();
            modeloT.addElement("");
            lista.setModel(modeloT);
            this.JBuscar.dispose();
            
        }
        catch(Exception er)
        {
            System.err.println("[IR_A] "+er);
        }
    }//GEN-LAST:event_ir_aActionPerformed

    private void listaValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_listaValueChanged
        
        System.out.println("Clic en elemento: "+lista.getSelectedValue());
        try
        {
            //archivo.setText(busqueda.get_archivo_asoc(lista.getSelectedValue().toString()));
            archivo.setText(busqueda.get_archivo_asoc(lista.getSelectedIndex()));
        }
        catch(Exception er)
        {
            System.err.println("[SELECTED LIST] "+er);
        }
    }//GEN-LAST:event_listaValueChanged

    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
       //Nuevo Proyecto
        
        crear_folder();
        iniciar_arbol();
    }//GEN-LAST:event_jMenuItem6ActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // creando nuevo archivo CNGA
        try
        {
            if(this.ya_creo_proyecto)
            {
                // creamos archivo y pestaña en el editor
                String nom_file = crear_archivo();
                
                if(!nom_file.isEmpty())
                {
                    // agreagamos nodo al arbol de directorios
                    agregar_nodo(nom_file);
                    se_abrio.add(nom_file);
                    id_abrio.add(index);
                    arbol_directorio.expandRow(0);
                }               
            }
            else
            {
                // creamos proyecto
                crear_folder();
                iniciar_arbol();
                
                // creamos archivo y pestaña en el editor
                String nom_file = crear_archivo();
                
                if(!nom_file.isEmpty())
                {
                    // agreagamos nodo al arbol de directorios
                    agregar_nodo(nom_file);
                    se_abrio.add(nom_file);
                    id_abrio.add(index);
                    arbol_directorio.expandRow(0);
                }               
               
            }     
        }        
        catch(Exception er)
        {
            System.err.println("Error en crear pestaña "+er.getMessage());
        }
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
         // Abrir Proyecto
        try
        {
            // abrir proyecto
            limpiar();

            abrir_eda();
            this.ya_creo_proyecto = true;
            b_abrir_proyecto.setEnabled(false);
            iniciar_arbol();

            // leemos lista de archivos
            Iterator lf = archivosP.iterator();

            while (lf.hasNext()) 
            {
                agregar_nodo(lf.next().toString());
                //System.out.println(lf.next().toString());
            }
            arbol_directorio.expandRow(0);
            arbol_directorio.repaint();
            
            // abrimos xml de metadatos
            abrir_xml();
            
        }
        catch(Exception er)
        {
            System.err.println("[ABRIR Proyecto] "+er.getLocalizedMessage());
                        
        }
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        try
        {
            // boton que guarda archivo actual y guarda archivo de arbol de proyecto
            guardar_arbol();

            //String nombre_archivo = this.dir_directorio+"\\"+archivos.get(tab_actual)+".CNGA";
            String nombre_archivo = this.dir_directorio+"\\"+get_nom_tab_actual();
            guardar_contenido_tab(nombre_archivo);
            System.out.println("Archivo actual a guardar: "+nombre_archivo);
            
            //Guardar sv = new Guardar();

            //sv.guardarArchivo(nombre_archivo, dir_padre);
        }
        catch(Exception er)
        {
            System.err.println("[Guardar] "+er.getMessage());
        }
        
    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
         // Guardar Como
        
        try
        {
            String nombre_archivo = guardar_como_eda();
            //System.err.println("[SAVE AS] "+guardar_como_eda());

            if(!nombre_archivo.isEmpty())
            {
                guardar_contenido_tab(nombre_archivo);
            }
        }
        catch(Exception er)
        {
            System.err.println("[SAVE AS...] exp "+er.getMessage());
        }
        
    }//GEN-LAST:event_jMenuItem4ActionPerformed

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
       
        // Salir de la aplicacion
        //System.out.println("[Salir del Sistema]");
        System.exit(0);
        if(this.ya_creo_proyecto)
        {
            busqueda.guardar_xml(dir_directorio+"\\"+dir_padre+".xml");
        }
        
    }//GEN-LAST:event_jMenuItem5ActionPerformed

    private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
         try 
        {
            if(ya_creo_proyecto)
            { 
                compilar_archivo();
                
                
            }
        }            
        catch (Exception ex) 
        {
            System.out.println("Error en llamar al PARSER "+ex.toString());      
            //historial.setText(historial.getText()+"error en Archivo \n");
        }
    }//GEN-LAST:event_jMenuItem8ActionPerformed

    private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu2ActionPerformed
      
    }//GEN-LAST:event_jMenu2ActionPerformed

    private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
         // Ver archivo de errores
        String file = get_nom_tab_actual().substring(0, get_nom_tab_actual().length()-5);
        archivo_externo(dir_directorio+"\\"+file+"- Errores .xhtml");
        System.out.println(dir_directorio+"\\"+file+"- Errores .xhtml");
    }//GEN-LAST:event_jMenuItem9ActionPerformed

    private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
       
    }//GEN-LAST:event_jMenuItem7ActionPerformed

    private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem11ActionPerformed
       
    }//GEN-LAST:event_jMenuItem11ActionPerformed

    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed
        File archivoX = new File("ManualUsuario.pdf");

        if(archivoX.exists())
        {
            java.awt.Desktop d = java.awt.Desktop.getDesktop();
            try
            {
                d.open(archivoX);
            }
            catch (IOException ex)
            {
                System.out.println("Error en abrir manual de usuario");
            }
        }
    }//GEN-LAST:event_jMenuItem10ActionPerformed

    private void tabla_simbolActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tabla_simbolActionPerformed
       // Ver tabla de simbolos
      
        archivo_externo(dir_directorio+"\\"+this.dir_padre+" - Tabla de simbolos.html");
        System.out.println(dir_directorio+"\\"+this.dir_padre+" - Tabla de simbolos.html");
    }//GEN-LAST:event_tabla_simbolActionPerformed

    private void VerGraficosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_VerGraficosActionPerformed
        
        Proyector Abrir = new Proyector(this, true);
        Abrir.setVisible(true);
        
    }//GEN-LAST:event_VerGraficosActionPerformed
  
    public void Crear_grafico(){
        Generador.Ingresar_contenido();
        Generador.Crear_archivo(this.dir_directorio);
        Generador.Crear_Imagen(this.dir_directorio);
    }
    
    
    public void mensaje()
    {
        JOptionPane.showMessageDialog(null, "advertencia", "no puede agregar un archivo mas", 0,null);
        //JOptionPane.showInputDialog(null, "Escriba el nombre del archivo: ",  "Creando Archivo CNGA",  JOptionPane)        
    }
    // escribimos los errores al archivo xhtml
    public void escribir_errores(String dir_entrada)
    {
        try
        {        
            File name = new File(dir_entrada);

            String path_completo = name.getAbsolutePath();
            String nombre = name.getName();
            String dir = name.getAbsolutePath().substring(0, path_completo.length()-nombre.length());
            String salida = nombre.substring(0, nombre.length()-5);

            if(errores_lexicos.size() > 0 || errores_sintacticos.size() > 0 || errores_semanticos.size() > 0)          
            { 
                
                Escribir_Errores apuntar = new Escribir_Errores();
                
                apuntar.ArchivoErrores(errores_lexicos, errores_sintacticos, errores_semanticos,dir,salida, nombre);
                b_errores.setEnabled(true);      
                
            }
            else
            {
                b_errores.setEnabled(false);
            
                
                
                msj.setText("Archivo sin errores");
             
                                  
                 
            }   
        }
        catch(Exception er)
        {
            System.out.println ("ERROR en metodo de escritura de errores "+er.getMessage());
        }
    }

    // creamos pestaños
    public void add_tab(String nombre_archivo)
    {
         JTextPane area_texto = new JTextPane();
         area_texto.setName(""+index);
         TextLineNumber tln = new TextLineNumber(area_texto);         
         Scroll_Panel.setRowHeaderView( tln );
         work_area.insertTab(nombre_archivo, new ImageIcon("src\\Iconos\\tab.png"), area_texto, "Codigo de "+nombre_archivo, index);
         //work_area.insertTab(nombre_archivo, new ImageIcon("src\\imagenes\\tab zero.png"), area_texto, "Codigo de "+nombre_archivo, index);
        //work_area.insertTab(nombre_archivo, new ImageIcon("tab2.png"), area_texto, "Codigo de "+nombre_archivo, index);
        
        // agregamos a la lista de archivos
        //archivos.add(directorio+"\\"+nombre_archivo);

        work_area.setSelectedIndex(index);
        //System.out.println("INDEX::::::: "+index);

        index++;

    }
     
    // Listener para la tabla
    public void listenerTAB()
    {
        work_area.addChangeListener
        (
                new ChangeListener()
                {
            @Override
                    public void stateChanged(ChangeEvent evt)
                    {
                        JTabbedPane pane = (JTabbedPane) evt.getSource();
                        int sel = pane.getSelectedIndex();
                        //System.out.println("Se Selecciono: "+sel);
                        tab_actual = sel;
                    }
                }
        );
    }
     
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        
        try
        {
            //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());


        }
        catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e)
        {
            System.out.println("ERROR en LOOK & FEEL"+e);
        }

        java.awt.EventQueue.invokeLater
        (
                new Runnable()
                {
                    public void run()
                    {
                        new Face().setVisible(true);
                    }
                }
        );
    }
    
 
    
    // metodos para crear pentagrama y MIDI
   
    // metodos de arbol de directorio _______________________
    
    public String guardar_como_eda() 
    {
        // Abrir Archivo en el sistema
        filtro_cnga filtro_archivo = new filtro_cnga();    
        String Salida = "";
        
        try
        {
            JFileChooser abrir = new JFileChooser(); 
            
                  
            abrir.setFileFilter(filtro_archivo);
            abrir.showSaveDialog(this);
            
          
            File name = abrir.getSelectedFile();
            int fin = name.getPath().length()-(name.getName().length()+1);            
            String comp_path = name.getPath().substring(0, fin);
            
            if(comp_path.equals(this.dir_directorio))
            {
                //System.out.println("Agregar al proyecto ---> ");
                agregar_nodo(name.getName());
                guardar_arbol();
                
            }
            //System.out.println("[SAVE AS...] path: "+name.getPath());
            
            Salida = name.getPath()+".CNGA";    
            
        }
        catch(Exception ioe)
        { 
            System.err.println("[Error en abrir proyecto] "+ioe);      
        }  
        
        return Salida;
}
    public void abrir_single_cnga() 
    {
        // Abrir Archivo en el sistema
        filtro_cnga filtro_archivo = new filtro_cnga();    
        String name_F = "";
        
        try
        {
            JFileChooser abrir = new JFileChooser(); 
            
                  
            abrir.setFileFilter(filtro_archivo);
            abrir.showOpenDialog(this);           
          
            File name = abrir.getSelectedFile();
            //int fin = name.getPath().length()-(name.getName().length()+1);            
            //String comp_path = name.getPath().substring(0, fin);
            
            name_F = name.getName().substring(0, name.getName().length()-5);    
            
            agregar_nodo(name_F);
            guardar_arbol();
            abrir_tabs(name.getPath(), name.getName());
            guardar_contenido_tab(this.dir_directorio+"\\"+name.getName());
            se_abrio.add(name_F);
            id_abrio.add(index);
                    
            
        }
        catch(Exception ioe)
        { 
            System.err.println("[Error en abrir proyecto] "+ioe);      
        }  
        
        //return name_F;
}
    public void abrir_proyecto(String dir)
    {
        //String archivo_dir =dir;
        FileInputStream archivor = null;
        try
        {
            archivor = new FileInputStream(dir);
        }
        catch(Exception er)
        {
            System.out.println("Error en obtener el archivo de entrada para EDA: "+er);
        }

        EscanerD EscanerD = null;
        ParserD ParserD = null;

        

        EscanerD = new EscanerD(archivor);
        try
        {
            ParserD = new ParserD(EscanerD);

            ParserD.parse();
            //System.out.println("Termino de analizar");
        }
        catch (Exception ex)
        {
            System.err.println("Error en Parser del Archivo EDA: "+ex);
        }
    }
    
    public void abrir_eda()
    {
        // Abrir Archivo en el sistema
        filtro_eda filtro_archivo = new filtro_eda();    
        
        try
        {
            JFileChooser abrir = new JFileChooser(); 
            
            //filtro            
            abrir.setFileHidingEnabled(false);
            abrir.setFileFilter(filtro_archivo);
            abrir.showOpenDialog(this);
            
            
            String extension;
            
            
            //FileReader fr = null;  
            File name = abrir.getSelectedFile();
            
            dir_directorio = name.getAbsoluteFile().toString().substring(0,name.getAbsoluteFile().toString().length()-(name.getName().length()+1));  
            dir_padre = name.getName().substring(0,name.getName().length()-4);
            //System.out.println("[EDA] path: "+dir_directorio);
            //System.out.println("[EDA] Nodo principal: "+dir_padre+"\n");
            
            extension = name.getName().substring(name.getName().length()-3,name.getName().length());
            //System.out.println("EXT "+extension);
            
            if(extension.equals("eda") || extension.equals("txt"))
            {
                abrir_proyecto(name.getAbsoluteFile().toString());
            }
           
            
        }
        catch(Exception ioe)
        { 
            System.err.println("[Error en abrir proyecto] "+ioe);      
        }  
}
    
    private void guardar_arbol()
    {
        XML s = new XML();
        s.create_xml(archivos, dir_padre, dir_directorio);
    }
    public void agregar_nodo(String nom_file)
    {
        try
        {
            if(!nom_file.isEmpty())
            {
                DefaultMutableTreeNode archivo = new DefaultMutableTreeNode(nom_file);

                modelo.insertNodeInto(archivo, master,files);
                //System.out.println("agragando nodo --> "+nom_file);
                archivos.add(nom_file);
                files++;
            }
        }
        catch(Exception er)
        {
            System.err.println("[Agregar NODO] exp "+er.getMessage());
        }
    }
     String ext = "";
    public String crear_archivo()
    {
        String nombre_archivo = "";
        
        try
        {
            
             
            int messageType = JOptionPane.QUESTION_MESSAGE;
            String[] options = {"XML", "CSS", "RUBY", "C"};
            int code = JOptionPane.showOptionDialog(this,"¿Que lenguaje Prefiere?","Elija un lenguaje", 0, messageType,null, options, "Opciones");
            //System.out.println("Answer: "+code);
            
            switch(code)
            {
                case 0: 
                    ext = ".xml";
                    break;
                    
                case 1:
                    ext = ".css";
                    break;
                    
                case 2:
                    ext = ".r";
                    break;
                    
               case 3:
                    ext = ".c";
                    break;
                   
               default:
                   ext = ".c";
            }           
            
            //if(file_control.contains(".css") && file_control.contains(".c") && file_control.contains(".xml") && file_control.contains(".r") )
            if(file_control.contains(ext))
            {
                //System.out.println("ya se crearon los 4 archivos basicos");
                JOptionPane.showMessageDialog(null, "Archivo: "+ext+" ya fue creado....");  
                nombre_archivo="";
            }
            else
            {
                //pedimos el nombre del archivo
                nombre_archivo = JOptionPane.showInputDialog(null, "Escriba el nombre del archivo: ",  "Creando Archivo CNGA",  JOptionPane.QUESTION_MESSAGE);

                String path_creacion = dir_directorio+"\\"+nombre_archivo+ext;
                //System.out.println("El Archivo se creara en: "+path_creacion);

                        
                if(!nombre_archivo.isEmpty())
                {
                    File el_archivo = new File(path_creacion);
                    boolean creo = el_archivo.createNewFile();

                    if(creo == true)
                    {
                        // creamos el tab para este archivo
                        add_tab(nombre_archivo+ext);
                        file_control.add(ext);
                        file_comp.add(path_creacion);
                        
                        // agregamos Listener a los tabs
                        int num_tabs =  this.work_area.getTabCount();
                        if(num_tabs == 1)
                        {
                            this.listenerTAB();
                            //System.out.append("Agregamos Listener a los tabs");
                        }
                        
                        nombre_archivo = nombre_archivo+ext;

                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "Archivo Ya Existe...!");
                    }

                    
                }
            }
            
        }
        catch (HeadlessException | IOException er)
        {
            System.err.println("Error en crar Archivo: "+er);
        }
        
        return nombre_archivo ;

    }
    public void crear_proyecto()
    {
        // Crear Nuevo Proyecto      
        crear_directorio();
        iniciar_arbol();
    }
    
    public void iniciar_arbol()
    {
        try
        {
            if(!dir_padre.isEmpty())
            {
                master = new DefaultMutableTreeNode(dir_padre);
                modelo = new DefaultTreeModel(master);

                arbol_directorio.setModel(modelo);
                arbol_directorio.setVisible(true);

            }
            else
            {
                this.b_abrir_proyecto.setEnabled(true);
            }
        }
        catch(Exception er)
        {
            System.err.println("[INICIAR ARBOL] EXP "+er.getMessage());
        }
    }
    
    public void crear_directorio()
    {
        try
        {
             // obtenemos el path del directorio junto al nombre
             dir_directorio = JOptionPane.showInputDialog(null, "Ingrese el path junto al nombre del proyecto?",  "Creando Proyecto...!",  JOptionPane.QUESTION_MESSAGE);

             // creamos el directorio
             File directorioF = new File(dir_directorio);           
             
             boolean creo_directorio = directorioF.mkdirs();

             if(creo_directorio == false)
             {
                 JOptionPane.showMessageDialog(null, "Proyecto ya existe...!");
                 dir_directorio = "";
                 dir_padre = "";
             }
             else
             {
                 dir_directorio = directorioF.getAbsolutePath();
                 dir_padre = directorioF.getName();
                 //System.out.println("Directorio Creado...");
                 ya_creo_proyecto = true;
                 b_abrir_proyecto.setEnabled(false);
             }
        }
        catch(Exception er)
        {
            System.out.println("Error en crear Directorio:Metodo: "+er);
        }
    }
    
    //___________ fin de metodos de arbol de directorios_____
    
  

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JFrame JBuscar;
    private javax.swing.JScrollPane Scroll_Panel;
    private javax.swing.JButton VerGraficos;
    private javax.swing.JTree arbol_directorio;
    private javax.swing.JLabel archivo;
    private javax.swing.JButton b_abrir_file;
    private javax.swing.JButton b_abrir_proyecto;
    private javax.swing.JButton b_buscar;
    private javax.swing.JButton b_ejecutar;
    private javax.swing.JButton b_errores;
    private javax.swing.JButton b_guardar;
    private javax.swing.JButton b_guardar_como;
    private javax.swing.JButton b_proyecto;
    private javax.swing.JButton back;
    private javax.swing.JButton cerrar_pestaña;
    private javax.swing.JButton cerrar_proyecto;
    private javax.swing.JDialog close_proyecto;
    private javax.swing.JDialog close_tab;
    private javax.swing.JToolBar herramientas;
    private javax.swing.JLabel id_tag;
    private javax.swing.JDialog info_proyecto;
    private javax.swing.JButton ir_a;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem11;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem7;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar.Separator jSeparator5;
    private javax.swing.JToolBar.Separator jSeparator6;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextArea jTextArea3;
    private javax.swing.JList lista;
    private javax.swing.JDialog listen;
    public static javax.swing.JLabel msj;
    private javax.swing.JButton nuevo_archivo;
    private javax.swing.JComboBox opciones;
    private javax.swing.JTextField parametro;
    private javax.swing.JToggleButton pause;
    private javax.swing.JToggleButton play;
    private javax.swing.JScrollPane scroll_directorio;
    private javax.swing.JToggleButton stop;
    private javax.swing.JButton tabla_simbol;
    private javax.swing.JTextArea tag;
    private javax.swing.JTabbedPane work_area;
    // End of variables declaration//GEN-END:variables
}

  /*
        System.out.println("_____________________ TS ______________________\n");
        
        
        System.out.println("Melodia: "+tabla_simbolos.getNombre_melodia());
        
        Iterator comp = tabla_simbolos.getCompositores().iterator();
        int cont = 1;     
            
        System.out.println("Compositor["+cont+"]: "+comp.next());
        while (comp.hasNext()) 
        {
            System.out.println("Compositor["+cont+"]: "+comp.next());
            cont++;
        }
        
        System.out.println("Compas: "+tabla_simbolos.getCompas());
        System.out.println("Genero: "+tabla_simbolos.getGenero());
        System.out.println("Estilo: "+tabla_simbolos.getEstilo());
        
        
        Iterator inst = tabla_simbolos.getInstrumentos().iterator();
        cont = 1;
        if(!tabla_simbolos.getInstrumentos().isEmpty())
        {
            System.out.println("    Los Instrumentos toca: "+tabla_simbolos.getTocan_instrumentos());
        }
        while (inst.hasNext()) 
        {
            System.out.println("Instrumento["+cont+"]: "+inst.next());
            cont++;
        }
        
        Iterator notas = tabla_simbolos.getNota().iterator();
        ArrayList an = tabla_simbolos.getAlias_nota();
        cont = 0;
        
        System.out.println("Notas:");
        while (notas.hasNext()) 
        {            
            System.out.println("    "+notas.next()+"  | "+an.get(cont));  
            cont++;
        }
        
        Iterator alt = tabla_simbolos.getAlteracion().iterator();
        Iterator aa = tabla_simbolos.getAlias_alteracion().iterator();    
        
        System.out.println("Alteraciones:");
        while (alt.hasNext()) 
        {            
            System.out.println("    "+alt.next()+"  | "+aa.next());  
            
        }
        
        Iterator tiempo = tabla_simbolos.getTiempo().iterator();
        Iterator at = tabla_simbolos.getAlias_tiempo().iterator();    
        
        System.out.println("Tiempo: "+tabla_simbolos.getVelocidad());
        while (tiempo.hasNext()) 
        {            
            System.out.println("    "+tiempo.next()+"  | "+at.next());  
            
        }
    
        System.out.println("Clave: "+tabla_simbolos.getClave());
        
        Iterator vc = tabla_simbolos.getVoces().iterator();    
        
        System.out.println("\n VOCES \n");
        
        String vox = "";
        Creator midi = new Creator();
        
        int num_vox = 1;
        
        while (vc.hasNext()) 
        {    
            Compas voz = new Compas();
            voz = (Compas)vc.next();
            System.out.println("    V"+num_vox+" "+voz.getNotas());  
            vox = "V"+num_vox+" "+voz.getNotas();  
            midi.voz(vox);
            
            num_vox++;
            
        }
        
        System.out.println("EL COMPAS "+tabla_simbolos.getEl_compas());
        
        //midi.crear_midi();
        System.out.println("\n_______________________________________________");
        
        */